<?php
 /** @package Garennes - Fonctions de gestion des classes */
 
 /**
 * Recuperation de tous les mef possibles pour un etablissement
 * @param int $id_etablissement Identifiant d'un etablissement (0:TOUS)
 * @return array Tableau des mefs
 *               Format : [0][0]=Nombre
 *                        [i][0]=id_mef
 *                        [i][1]=code
 *                        [i][2]=formation
 *                        [i][3]=specialite
 *                        [i][4]=libelle_long
 *                        [i][5]=mefstat11
 *                        [i][6]=mefstat4
 */
 Function garennes_mefs ($id_etablissement)
  {
   Global $id_sql ;
   If ($id_etablissement <= 0) { $etab = "" ; } Else { $etab = "WHERE id_etablissement='".$id_etablissement."' " ; }
   $resultats = SQL_commande ("SELECT id_mef,code,formation,specialite,libelle_long,mefstat11,mefstat4 FROM mefs ".$etab."ORDER BY libelle_long", $id_sql) ;
   $table [0][0] = SQL_nbr_lignes ($resultats) ;
   $nbr_champs = SQL_nbr_champs ($resultats) ;
   For ($i = 1 ; $i <= $table [0][0] ; $i++)
    {
     $resultat = SQL_ligne_suivante ($resultats) ;
     For ($j = 0 ; $j < $nbr_champs ; $j++)
      {
       $table [$i][$j] = $resultat [$j] ;
      }
    }
   Return $table ;
  }
 
 /**
 * Renvoi le contenu d'un champ mef suivant le code mef
 * @param string $code_mef Code mef unique
 * @param string $nom_champ Nom du champ dans la bdd table mefs
 * @return string Contenu
 */
 Function garennes_mef_champ_par_code ($code_mef, $nom_champ)
  {
   Global $id_sql ;
   If (($code_mef != "") And ($nom_champ != ""))
    {
     $resultats = SQL_commande ("SELECT ".$nom_champ." FROM mefs WHERE code='".$code_mef."' LIMIT 1", $id_sql) ;
     If (SQL_nbr_lignes ($resultats) == 1)
      {
       $resultat = SQL_ligne_suivante ($resultats) ;
       Return $resultat [0] ;
      }
     Else { Return "" ; }
    }
   Return "" ;
  }
 
 /**
 * Renvoi le contenu d'un champ mefstat4 suivant le code mef stat4
 * @param string $code_mef Code mef unique
 * @param string $nom_champ Nom du champ dans la bdd table mefs
 * @return string Contenu
 */
 Function garennes_mefsat4_champ_par_code ($code_mef4, $nom_champ)
  {
   Global $id_sql ;
   If (($code_mef4 != "") And ($nom_champ != ""))
    {
     $resultats = SQL_commande ("SELECT ".$nom_champ." FROM mefstats4 WHERE code='".$code_mef4."' LIMIT 1", $id_sql) ;
     If (SQL_nbr_lignes ($resultats) == 1)
      {
       $resultat = SQL_ligne_suivante ($resultats) ;
       Return $resultat [0] ;
      }
     Else { Return "" ; }
    }
   Return "" ;
  }
 
 /**
 * Fonction de suppression d'un service prof dans une classe
 * @param int $id_classe Identifiant de la classe
 * @param int $id_sp Identifiant du service prof
 * @param int $id_groupe Identifiant du groupe d'appartenance
 * @param int $millesime Millesime
 * @param ressource $id_sql Identifiant de connexion SQL
 * @return int 1=Ok,0=Non ok
 */
 Function effacer_un_service_prof ($id_classe, $id_sp, $id_groupe, $millesime, $id_sql)
  {
   If ($id_sp != 0)
    {
     $res = SQL_commande ("SELECT service_classe,groupe_classe,discipline FROM services_prof WHERE id_service_prof='".$id_sp."' LIMIT 1", $id_sql) ;
     $sp = SQL_ligne_suivante ($res) ;
     // Verifie qu'il n'existe qu'un seul service prof pour le service classe
     $sc = SQL_commande ("SELECT id_service_prof FROM services_prof WHERE service_classe='".$sp [0]."' AND millesime='".$millesime."'", $id_sql) ;
     If (SQL_nbr_lignes ($sc) == 1)
      {
       $ok = SQL_commande ("DELETE FROM services_classe WHERE id_service_classe='".$sp [0]."' LIMIT 1", $id_sql) ;
      }
     $ok = SQL_commande ("DELETE FROM services_prof WHERE id_service_prof='".$id_sp."' LIMIT 1", $id_sql) ;
     // Gestion des goupes de classes
     If ($sp [1] > 0)
      {
       // Verifie qu'il est seul
       $ok = SQL_commande ("SELECT COUNT(id_service_prof) FROM services_prof WHERE groupe_classe='".$sp [1]."' AND millesime='".$millesime."'", $id_sql) ;
       $nbr = SQL_ligne_suivante ($ok) ;
       If ($nbr [0] == 0)
        {
         $ok = SQL_commande ("DELETE FROM groupes_classe WHERE id_groupe_classe='".$sp [1]."' LIMIT 1", $id_sql) ;
         $ok = SQL_commande ("DELETE FROM groupes_eleve WHERE groupe='".$sp [1]."' AND millesime='".$millesime."'", $id_sql) ;
        }
      }
     $ok = SQL_commande ("DELETE FROM options_eleve WHERE service_classe='".$sp [0]."' AND millesime='".$millesime."'", $id_sql) ;
     $ok = SQL_commande ("DELETE FROM appreciations WHERE service_prof='".$id_sp."' AND millesime='".$millesime."'", $id_sql) ;
     $ok = SQL_commande ("DELETE FROM calcul_moyenne WHERE service_prof='".$id_sp."' AND millesime='".$millesime."'", $id_sql) ;
     $ok = SQL_commande ("DELETE FROM classe_virtuelle WHERE service_prof='".$id_sp."' AND service_classe='".$sp [0]."' AND millesime='".$millesime."'", $id_sql) ;
     $ok = SQL_commande ("DELETE FROM classement WHERE id_service_classe='".$sp [0]."' AND id_classe='".$id_classe."' AND millesime='".$millesime."'", $id_sql) ;
     // Recherche tous les controles et efface les notes correspondantes
     $controles = SQL_commande ("SELECT id_controle FROM controles WHERE service_prof='".$id_sp."' AND discipline='".$sp [2]."' AND millesime='".$millesime."'", $id_sql) ;
     $nbr_controles = SQL_nbr_lignes ($controles) ;
     For ($j = 0 ; $j < $nbr_controles ; $j++)
      {
       $ctl = SQL_ligne_suivante ($controles) ;
       $ok = SQL_commande ("DELETE FROM notes WHERE controle='".$ctl [0]."' AND millesime='".$millesime."'", $id_sql) ;
      }
     $ok = SQL_commande ("DELETE FROM controles WHERE service_prof='".$id_sp."' AND discipline='".$sp [2]."' AND millesime='".$millesime."'", $id_sql) ;
     $ok = SQL_commande ("DELETE FROM interdictions WHERE service_prof='".$id_sp."' AND millesime='".$millesime."'", $id_sql) ;
     $ok = SQL_commande ("DELETE FROM moyennes WHERE service_prof='".$id_sp."' AND service_classe='".$sp [0]."' AND millesime='".$millesime."'", $id_sql) ;
     $ok = SQL_commande ("DELETE FROM simulation_coefficients WHERE service_prof='".$id_sp."' AND millesime='".$millesime."'", $id_sql) ;
     // Efface les attributions aux groupes de disciplines
     $ok = SQL_commande ("DELETE FROM groupement_disciplines_attribution WHERE id_service_prof='".$id_sp."' AND millesime='".$millesime."'", $id_sql) ;
     // Renumerote le groupe
     $ok = ordre_renumerotation ($id_classe, $id_groupe, $millesime) ;
     Return 1 ;
    }
   Else { Return 0 ; }
  }
 
 /**
 * Fonction de changement de groupement d'un service prof dans une classe
 * @param int $id_classe Identifiant de la classe
 * @param int $id_sp Identifiant du service prof
 * @param int $id_a_grp Identifiant de l'ancien groupement de disciplines
 * @param int $id_n_grp Identifiant du nouveau groupement de disciplines
 * @param int $millesime Millesime
 * @param ressource $id_sql Identifiant de connexion SQL
 * @return int 1=Ok,0=Non ok
 */
 Function change_groupe_service_prof ($id_classe, $id_sp, $id_a_grp, $id_n_grp, $millesime, $id_sql)
  {
   If ($id_sp != 0)
    {
     $renumerote = 0 ;
     // Retrouve le service classe
     $id_service_classe = service_classe_service_prof ($id_sp) ;
     // Retrouve le nombre de services classe pour le nouveau groupe
     $nombre_max = ordre_nombre_service_classe_par_groupement ($id_classe, $id_n_grp, $millesime) ;
     // Est-ce qu'il fait deja parti d'un classement ?
     $r1 = SQL_commande ("SELECT id_classement FROM classement WHERE id_service_classe='".$id_service_classe."' LIMIT 1", $id_sql) ;
     If (SQL_nbr_lignes ($r1) == 1)
      {
       // Oui
       $r = SQL_ligne_suivante ($r1) ;
       If ($nombre_max > 0)
        {
	 // Classement deja existant donc on translate
         $ok = SQL_commande ("UPDATE classement SET numero='".($nombre_max+1)."' WHERE id_classement='".$r [0]."' LIMIT 1", $id_sql) ;
	}
       Else
        {
	 // Pas de classement dans le nouveau groupe donc on efface
	 $ok = SQL_commande ("DELETE FROM classement WHERE id_classement='".$r [0]."' LIMIT 1", $id_sql) ;
	}
       $renumerote = 1 ;
      }
     Else
      {
       // Non
       If ($nombre_max > 0)
        {
	 // Classement deja existant donc on translate
         $ok = SQL_commande ("INSERT INTO classement (id_classe,id_service_classe,numero,millesime) VALUES ('".$id_classe."','".$id_service_classe."','".($nombre_max+1)."','".$millesime."')", $id_sql) ;
	 $renumerote = 1 ;
	}
      }
     // Deplacement reel de la discipline vers le nouveau groupe
     If ($id_n_grp != 0)
      {
       // MAJ ou INS
       If ($id_a_grp != 0) { $requete = "UPDATE groupement_disciplines_attribution SET id_groupement_discipline_definition='".$id_n_grp."' WHERE id_service_prof='".$id_sp."' AND millesime='".$millesime."'" ; }
       Else { $requete = "INSERT INTO groupement_disciplines_attribution (id_groupement_discipline_definition,id_service_prof,millesime) VALUES ('".$id_n_grp."','".$id_sp."','".$millesime."')" ; }
      }
     Else { $requete = "DELETE FROM groupement_disciplines_attribution WHERE id_service_prof='".$id_sp."' AND millesime='".$millesime."'" ; }
     $ok = SQL_commande ($requete, $id_sql) ;
     // On renumerote l'ancien groupement
     If ($renumerote == 1) { $ok = ordre_renumerotation ($id_classe, $id_a_grp, $millesime) ; }
     $ok = ordre_maj ($id_classe) ;
     Return 1 ;
    }
   Else { Return 0 ; }
  }
?>